local a = 1
local b = 2
function xxx()
	local c = 3
	local d = 4
	print(a + b)

	function yyy()
		print(c + d)
	end
end

--[[
    1.lua函数去找一个变量的过程  local列表，upvalue列表，_ENV
    而生成信息的时候是从top,2,3...n生成proto和upvalelist
    （1）lua函数查找一个变量v，首先会在自己的local变量中查找，如果找到就直接获取它的值，找不到则进入下一步
    （2）查找upvalue列表，有没有一个名为v的upvalue，有则获取它的值，没有则进入下一步
    （3）到_ENV里去查找一个名为v的值
    2.编译阶段，只会生成Proto实例，并将编译结果存到这个结构中。只有执行脚本逻辑阶段，才会将LClosure实例创建。
    （1）编译时期，存储upvalue信息的Upvaldesc，只是标记upvalue的位置
    （2）运行期，实际存储upvalue值的UpVal结构
]]